package com.anosine.gpsl.android.ui.activity;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnTouchListener;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.anosine.gpsl.android.R;
import com.anosine.gpsl.android.entity.Login;
import com.anosine.gpsl.android.presenter.BasePresenterActivity;
import com.anosine.gpsl.android.presenter.RegisterPresenter;
import com.anosine.gpsl.android.ui.RegisterView;
import com.anosine.gpsl.android.util.FontSize;
import com.anosine.gpsl.android.util.StringUtil;
import com.anosine.gpsl.android.util.ToastHelper;
import com.anosine.gpsl.android.util.selectItemInterface;
import com.lidroid.xutils.ViewUtils;
import com.lidroid.xutils.view.annotation.ViewInject;
import com.lidroid.xutils.view.annotation.event.OnClick;

/**
 * @Title: RegisterActivity
 * @Package com.anosine.gpsl.android.ui.activity
 * @Description: 注册界面
 * @author: sunny
 * @date: 2015-11-19
 * @version V1.0
 */
public class RegisterActivity extends BasePresenterActivity implements RegisterView {

	@ViewInject(R.id.content_tv_title)
	TextView title;
	@ViewInject(R.id.Show_Message)
	TextView Show_Message;
	@ViewInject(R.id.message_ll)
	LinearLayout messageLayout;

	@ViewInject(R.id.et_username)
	EditText mEtUserName;
	@ViewInject(R.id.et_pass)
	EditText mEtUserPass;
	@ViewInject(R.id.et_confirmpass)
	EditText mEtUserConfirmPass;
	@ViewInject(R.id.et_deviceno)
	// 设备序列号
	EditText mEtCarNo;
	@ViewInject(R.id.et_realname)
	EditText mEtRealName;
	@ViewInject(R.id.et_idno)
	// 身份证后八位
	EditText mEtIdNo;
	@ViewInject(R.id.et_sim)
	EditText mEtPhoneSim;	
	@ViewInject(R.id.regProtocolCB)
	CheckBox regProtocolCB;
	@OnClick(R.id.regAgreement)
	private void AgreementOnClick(View v) {
		//查看注册协议
		Intent i=new Intent(RegisterActivity.this,RegAgreementActivity.class);
		startActivity(i);
	}
	/**
	 * @Title: BackOnClick(View v)
	 * @Description: 返回按钮的点击事件，点击关闭当前activity
	 * @param: View v
	 * @return: 无
	 * @throws
	 */
	@OnClick(R.id.button_left)
	private void BackOnClick(View v) {
		finish();
	}

	/**
	 * @Title: RegisterOnClick(View v)
	 * @Description: 注册按钮的点击事件
	 * @param: View v
	 * @return: 无
	 * @throws
	 */
	@OnClick(R.id.register)
	private void RegisterOnClick(View v) {

		// 启动MVP
		initActivityOfRegister();

	}

	private void initActivityOfRegister() {
		String registerName = mEtUserName.getText().toString();
		if (StringUtil.isEmptyOrNull(registerName)) {
			ToastHelper.toast("请输入用户名");
			return;
		}
		String realName = mEtRealName.getText().toString();
		if (StringUtil.isEmptyOrNull(realName)) {
			ToastHelper.toast("请输入真实姓名");
			return;
		}
		String idNo = mEtIdNo.getText().toString();
		if (StringUtil.isEmptyOrNull(idNo)) {
			ToastHelper.toast("请输入身份证后8位");
			return;
		}
		String carNo = mEtCarNo.getText().toString();
		if (StringUtil.isEmptyOrNull(carNo)) {
			ToastHelper.toast("请输入设备序列号");
			return;
		}
		String phoneCardNo = mEtPhoneSim.getText().toString();
		if (StringUtil.isEmptyOrNull(phoneCardNo)) {
			ToastHelper.toast("请输入手机sim号");
			return;
		}

		String password = mEtUserPass.getText().toString();
		if (StringUtil.isEmptyOrNull(password)) {
			ToastHelper.toast("请输入密码");
			return;
		}
		String repeatpassword = mEtUserConfirmPass.getText().toString();
		if (StringUtil.isEmptyOrNull(repeatpassword)) {
			ToastHelper.toast("请再次输入密码");
			return;
		}
		if (!password.equals(repeatpassword)) {
			ToastHelper.toast("密码不一致");
			return;
		}
		if(!regProtocolCB.isChecked()){
			ToastHelper.toast("您还没有同意注册协议！");			
			return;
		}
		// 将合成的URL传给服务器
		RegisterPresenter presenter = new RegisterPresenter(this);
		// 0 用户名 1密码 3设备号 4电话号码 5 真实姓名 6身份证后八位
		presenter.loadRegister(registerName, password, carNo, realName, idNo,
				phoneCardNo);
	}

	/**
	 * @Title: onCreate(Bundle savedInstanceState)
	 * @Description: 初始化登录页面
	 * @param: savedInstanceState
	 * @return: 无
	 * @throws
	 */
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_register);
		ViewUtils.inject(this);
		title.setText("注册");
		// TypedValue.COMPLEX_UNIT_PX : Pixels //像素
		// TypedValue.COMPLEX_UNIT_SP : Scaled Pixels //sp
		// TypedValue.COMPLEX_UNIT_DIP : Device Independent Pixels
		// dip我建议传入像素属性，因为根据效果图来做的话一般很容易能截取到像素的
//		title.setTextSize(TypedValue.COMPLEX_UNIT_SP,
//				FontSize.getFontSize(this, 37));
		Show_Message.setTextSize(TypedValue.COMPLEX_UNIT_SP,
				FontSize.getFontSize(this, 27));
		mEtUserName.addTextChangedListener(new TextWatcher() {

			/**
			 * @Title: onTextChanged(CharSequence s, int start, int before, int
			 *         count)
			 * @Description: 进行改变做的操作
			 * @param: CharSequence s, int start, int before,int count
			 *         这里的s表示改变之后的内容
			 *         ，通常start和count组合，可以在s中读取本次改变字段中新的内容。而before表示被改变的内容的数量
			 * @return: 无
			 * @throws
			 */
			@Override
			public void onTextChanged(CharSequence s, int start, int before,
					int count) {

			}

			/**
			 * @Title: beforeTextChanged(CharSequence s, int start, int
			 *         count,int after)
			 * @Description: 在改变之前做的操作
			 * @param: CharSequence s int start, int count, int after
			 *         这里的s表示改变之前的内容
			 *         ，通常start和count组合，可以在s中读取本次改变字段中被改变的内容。而after表示改变后新的内容的数量。
			 * @return: 无
			 * @throws
			 */

			@Override
			public void beforeTextChanged(CharSequence s, int start, int count,
					int after) {
			}

			/**
			 * @Title: afterTextChanged(Editable s)
			 * @Description: 内容变化后的操作
			 * @param: s 表示最终内容
			 * @return: 无
			 * @throws
			 */

			@Override
			public void afterTextChanged(Editable s) {
				String editable = mEtUserName.getText().toString();
				if (editable.length() > 11) {
					ToastHelper.toast("用户名不能超过11位！");
				}
			}
		});
	}

	/**
	 * @Title: setRegister(Login register)
	 * @Description:获取解析完后的注册信息
	 * @param: Login register
	 * @return: 无
	 * @throws
	 */

	@Override
	public void setRegister(Login t) {
		if ("msg_register_success".equals(t.message)) {
			ToastHelper.toast("注册成功！");
			finish();
		} else {
			if("msg_deviceno_register".equals(t.message)){
				ToastHelper.toast("此设备号已经注册过！");

			}else if("msg_deviceno_notexist".equals(t.message)){
				ToastHelper.toast("你输入的设备号错误或者不存在！");

			}else if("msg_mobilenumber_register".equals(t.message)){
				ToastHelper.toast("此手机号码已经被注册过！");

			}else if("msg_fail".equals(t.message)){
				ToastHelper.toast("您输入的参数错误！");
			}else if("msg_flase".equals(t.message)){
				ToastHelper.toast("注册失败！");

			}
		}
	}

}
